Conducerea automată este una din tehnologiile care în prezent revoluționează industria automobilelor, având un puternic impact asupra calității vieților noastre. Beneficiile imediate care motivează investițiile în aceste tehnologii sunt scăderea numărului de accidente, creșterea confortului, reducerea stresului, mai mult timp liber în momentul în care mașina execută anumite manevre în locul șoferului, îmbunătățirea fluidității traficului și economisirea de combustibil.
În timp ce viziunea pe termen lung este să avem mașini complet autonome (Figura 1), realizarea unor obiective mai "simple" precum eliminarea coliziunilor în cazul frânării bruște a mașinii din față (care au loc foarte frecvent în orașele aglomerate din prezent), salvarea de vieți omenești prin eliminarea coliziunilor cu pietoni sau bicicliști, sau conducerea între două ieșiri de autostradă fără a solicita atenția conducătorului auto, trezesc interesul și motivația de a dezvolta astfel de sisteme. Dintr-o perspectivă inginerească, intrând în detaliile realizării unor astfel de tehnologii, vom descoperi un grad foarte ridicat de complexitate și cu siguranță adevărate provocări.
Figura 1 - Viziunea conducerii automate
Setul de tehnologii folosite pentru conducerea automată pot fi grupate în tehnologii de percepție ("seeing"), de luare a deciziilor ("thinking") și de acționare/control ("acting") [1]. Gruparea lor este similară cu ceea ce ar face un șofer: prima dată vede scena de trafic (percepție), apoi ia decizii legat de modul în care să acționeze, ulterior controlând mașina, virând, acționând frâna sau accelerând.
Tehnologiile de percepție implică senzori pentru captarea și digitizarea împrejurimilor mașinii, tehnologii de localizare și tehnologii de fuziune a informațiilor provenite de la senzori și din hartă. Toate aceste reprezentări și informații sunt utilizate ulterior de modulele din sistem responsabile de luarea deciziilor.
Figura 2 - Exemple de detecții de la senzori
Ce desemnează digitizarea împrejurimilor mașinii (Figura 2)?
În calitate de inginer software, îți poți imagina obținerea unor structuri de date (ex.: pot fi clase C ++) care conțin informații reprezentând scenele de trafic.
Acestea pot conține liste a obiectelor din trafic de diferite tipuri (autoturisme, pietoni, bicicliști, semne de circulație, semafoare), împreună cu atribute precum static/dinamic, viteză, accelerație, poziție 3D față de mașină, probabilități de existență etc. De asemenea, digitizarea implică elemente de infrastructură cum ar fi zona drumului, profilul suprafeței, marcaje rutiere, borduri, clădiri, semne de circulație - toate acestea sunt extrem de importante pentru funcții de conducere automată. Acest lucru este posibil prin utilizarea de senzori video, RADAR și LiDAR, împreună cu hărți de înaltă precizie (necesare pentru un nivel ridicat de automatizare).
În funcție de capabilitățile de percepție și de luare a deciziilor, sistemele de conducere automată au fost clasificate (Figura 3) de la nivel 0 (fără automatizare) până la nivel 5 (fără conducător auto). Găsesc sugestive și ușor de înțeles terminologiile "hands off" (nivel 2), "eyes off" (nivel 3) și "mind off" (nivel 4).
Cu toate că există mai multe investiții în sistemele cu nivel 4 și 5 de automatizare ( ex.: colaborarea Bosch-Daimler pentru așa-numitele "robo-taxiuri" [2]), industria lucrează în prezent la dezvoltarea de serie a sistemelor "eyes off" în ideea de a beneficia milioane de oameni în viitorul apropiat de aceste sisteme în mașini de producție. Aceasta este cu siguranță un pas important, deoarece responsabilitatea trece de la conducătorul auto la sistem, fapt care este și o mare provocarea tehnică.
Figura 3 - Cele 6 nivele de automatizare
În ceea ce privește tehnologiile de percepție, la Centrul de Inginerie Bosch Cluj, se dezvoltă software și algoritmi pentru sisteme video, RADAR și ultrasunete, în timp ce pentru tehnologiile de acționare/control se dezvoltă unu sistem de direcție asistată electric.
Figura 4 - Senzori RADAR si video
Vom intra puțin în detaliile dezvoltării sistemelor video și a algoritmilor de viziune artificială!
Viziunea artificială este o disciplină care se ocupă cu extragerea de informații din imagini și din date video. În contextul conducerii automate, folosind metode de viziune artificială este teoretic posibil să se extragă dintr-un șir bidirecțional de numere (imaginea) tot ceea ce șoferul poate să vadă. De exemplu: obiectele și elementele de infrastructură menționate mai sus. O clasă de metode ar fi cele bazate pe învățare. Acestea au câștigat teren în ultimii cinci ani datorită creșterii popularității rețelelor neuronale convoluționale (deep learning), la fel cum de altfel și inteligența artificială a crescut în popularitate, datorită rezultatelor semnificativ mai bune aduse de rețelele neuronale convoluționale comparativ cu metodele clasice de învățare. Din punct de vedere al percepției, rețelele neuronale convoluționale sunt foarte eficiente pentru segmentarea semantică, care presupune estimarea unei clase pentru fiecare pixel (Figura 5) sau pentru detecția obiectelor care implică estimarea unui dreptunghi în jurul anumitor clase de obiecte.
Figura 5 - Segmentarea semantică și detecția obiectelor
Având suficiente date de antrenare (și experiență în inteligență artificială), principala provocare este de a rula în timp real algoritmi de detecție și de clasificare (proces cunoscut și sub denumirea de inferență în comunitatea de AI) pe hardware embedded , cu consum redus de energie. O altă provocare este aceea de a avea întotdeauna rezultate de încredere comparativ cu alte aplicații ale metodelor de învățare. (Ne putem imagina care este nivelul de încredere necesar prin compararea unui algoritm de inteligență artificială care lasă un e-mail spam să intre în inbox vs. un algoritm care nu detectează un pieton într-un scenariu de frânare automată și acesta este accidentat).
Atât segmentarea semantică cât și detecția obiectelor sunt estimări în spațiul 2D al imaginii, în timp ce mașina se mișcă în mod evident într-un spațiu 3D. Astfel, viziunea artificială 3D este o tehnologie esențială pentru a face tranziția din spațiul 2D al imaginii în spațiul 3D.
Figura 6 - Proiecție perspectivă pentru achiziția imaginilor
Ce presupune aceasta? Practic după "câteva" etape de pre-procesare (ex: eliminarea distorsiunilor lentilelor) achiziția unei imagini poate fi modelată geometric ca o proiecție perspectivă. Un punct 3D (indicat cu albastru în Figura 6) este proiectat în planul imagine (indicat cu verde în Figura 6) unind punctul 3D cu centrul de proiecție (O în Figura 6). Astfel, dacă punctul P este un punct 3D de pe culoarea roșie a unei lumini de frână, atunci acesta va fi proiectat într-un pixel roșu; dacă punctul 3D este pe culoarea galbenă a unui semnalizator de schimbare de direcție, atunci acesta va fi proiectat într-un pixel galben; dacă punctul P este un punct 3D pe un marcaj rutier (banda de mers, trecere de pieton, săgeți etc.), atunci proiecția va fi un pixel alb.
Pe baza acestei modelări geometrice este posibil să se reconstruiască scene 3D valorificând două sau mai multe imagini. În cazul unei camere stereo, avem o imagine stângă și o imagine dreaptă, iar în cazul unui sistem mono reconstrucția 3D se poate face din imagini consecutive. Pentru mai multe detalii matematice (care pot fi deduse din relații geometrice simple în triunghiuri asemenea) voi face trimitere la Figura 7 conținând două slide-uri dintr-un curs de conducere automată pe care am început să-l ținem la universitățile din Cluj (conținutul pot să-l ofer la cerere). Pentru și mai multe detalii, vă sugerez cursul de procesare a imaginilor al domnului profesor Nedevschi [3], și o carte foarte bună și detaliată despre viziune artificială [4].
Figura 7 - Geometrie 3D geometry, slide-uri din cursul de conducere automată
Valoarea "d" denumită disparitate în Figura 7 este deplasamentul dintre pixeli corespunzători între imaginea stângă și imaginea dreaptă, și se determină algoritmic, la nivelul fiecărui pixel, cu precizie de sub-pixel, rezultând o așa-zisă hartă de disparitate (Figura 8). Calculul în timp real al unei astfel de hărți de disparitate, necesită accelerare hardware specializată pentru rularea algoritmilor de determinare a corespondențelor. Privind în ansamblu, Figura 7 arată un set de formule pentru a obține o reconstrucție 3D (x,y,z) pentru un pixel (u,v) având disparitatea d a acestuia. În particular, regăsim bine cunoscuta formulă z=fb/d pentru a obține distanța longitudinală la puncte din scenă cunoscând disparitatea acestora. Folosind o formulare matematică ceva mai complexă este posibil să reconstruim scene 3D cu o cameră mono pe baza corespondențelor temporale de pixeli ("optical flow" în literatura de specialitate) și pe baza transformatei 3D dintre imaginile succesive ale camerei ("structure from motion" în limbajul tehnic.).
Figura 8 - Imaginea dreaptă dintr-un sistem stereo și harta de disparitate corespunzătoare
Având o astfel de hartă de disparitate și reconstrucția 3D corespunzătoare acesteia, provocarea algoritmică devine detectarea de entități 3D din această reprezentare. Un astfel de exemplu este spațiul 3D liber (Figura 9), care este un poligon având vârfurile pe drum și reprezentând zona delimitată de orice fel de obiecte 3D. În cazul conducerii automate, spațiul de manevră se obține prin fuzionarea informațiilor de la senzori video cu alți senzori (RADAR, LiDAR) și cu informații din hărți precise, pentru un grad ridicat de robustețe a măsurătorilor.
Figura 9 - Spațiul 3D liber undeva în Cluj-Napoca
Chiar dacă ingredientul cheie este expertiza algoritmică în utilizarea metodelor potrivite (geometrie 3D, metodele numerice, prelucrarea imaginilor și recunoașterea formelor, inteligența artificială, o bună înțelegere a legilor fizicii etc.) sau inovare, dacă acestea nu sunt disponibile în literatura de specialitate, provocările sunt mult mai mari decât munca de dezvoltare de algoritmi.
Complexitatea cerințelor necesită o bună arhitectură de sistem și un bun design software pentru a gestiona această complexitate. Nevoia de a rula totul în timp real pe platforme hardware necesită cunoștințe de embedded software (în principiu C/C ++), optimizarea software-ului și posibilitatea de a rula bucăți de software intens computaționale precum reconstrucția 3D sau rețele neuronale convoluționale pe hardware specializat. Automatizarea validării unor astfel de sisteme necesită o infrastructură hardware și software bine pusă la punct (ex.: pentru antrenarea rețelelor neuronale convoluționale, pentru colectarea, stocarea și procesarea unor cantități mari de date). Dezvoltarea unor aplicații software precum mediile de simulare 3D (similare cu jocurile 3D) sau vizualizări 3D sunt necesare pentru a crește eficiența dezvoltării, integrarea întregului sistem în mașină necesită know-how legat de rețelele de comunicare din vehicule (ex: CAN, FlexRay, Ethernet), și în plus totul trebuie să fie conectat (ex.: pentru actualizări de hărți în timp real și pentru poziționare precisă pe bază de detecții video [5]). Lista poate să continue, rezultând o imagine complexă a modului în care sistemele video și viziunea artificială contribuie la realizarea condusului automat.
[1] Tehnologii Bosch de conducere automată
[2] Bosch și Daimler lucrează împreună la conducerea automată
[3] Curs de procesarea imaginilor la UTCN
[4] Richard Hartley, Andrew Zisserman, "Multiple View Geometry in Computer Vision"
de Paul Resiga
de Mihai Babici
de Mircea Vădan